This is a long collection of thoughts and problems that two indie developers faced when trying to use Rust for game development after completing development of several games written in Rust. They conclude that Rust presents fundamental challenges to game development, even after one becomes experienced with it. For example, Rust's borrow checker often requires code restructuring for even basic tasks, leading to a frustrating development experience. Also, Rust's focus on refactoring and correctness can lead to over-engineered solutions that prioritize code purity over being able to ship the game to a playable state quickly.
Tuesday, May 7, 2024Braindump is an AI game studio that lets users build top-down/2.5D games by typing prompts. It allows users to define units, abilities, and attributes, as well as populate the game map with objects and create game rules. Two challenges in building AI games were designing an intuitive user interface for prompting the AI and creating a streamlined "game API" that provides enough structure for the LLM to focus on filling in code and data.
The Total Annihilation graphics engine was developed before hardware acceleration was widely available. The engine used a mix of fixed and floating-point math, with some assembly code optimizations. Due to the 8-bit palette limitation, various tricks like lookup tables were used for effects like alpha blending and shadows. To improve performance, unit rendering was optimized by caching 3D models as sprites and using z-buffering for self-intersection. This article continues to go through the various innovations of the graphics engine back then.
Multiplayer games can be a scary concept for indie game developers as it's really hard to design for all the different network conditions with e.g. people playing on terrible 3G connections and across continents. If you're looking to dip your toes in the water, check out these new articles on the Dusk blog: >> My Journey Making JavaScript Games — Kevin Glass shares his experience creating a multiplayer version of a traditional rogue/nethack game. >> Making JS deterministic for fun and glory — how to make JavaScript deterministic so you only need to send player inputs over the internet with each client running the full game simulation in perfect sync. >> Networking a Top Down RPG — including code examples showing how to synchronize clients in Dusk.
The creator of the Impact JavaScript game engine rebuilt it in C and called it high_impact. This new engine is designed for 2D action games and runs on Windows, Mac, Linux, and the web. high_impact utilizes a simple framework with minimal code and is highly extensible, offering support for tile-maps, entities, collision detection, and rendering through OpenGL or a software renderer. The developer ported two of his original Impact games, Biolab Disaster and Drop, to high_impact to demonstrate the engine's functionality.
A parent expressed a desire to find a suitable platform for their 11-year-old child, who is interested in creating video games. The child has shown creativity by using PowerPoint and Google Presentations to design a crafting and turn-based combat game but is facing limitations with these tools. The parent noted that the child has a basic understanding of coding, having previously created a command-line version of Rock Paper Scissors Lizard Spock in Python, but they believe a code-first platform might be too advanced at this stage. They are looking for a platform that allows for a point-and-click interface with some scripting capabilities. In response, various users on Hacker News provided a range of suggestions. Some recommended game development tools that cater to beginners and allow for creative expression without requiring extensive coding knowledge. Notable suggestions included: 1. **Adventure Game Studio** and **Twine** for narrative-driven games. 2. **Dreams** on PlayStation, which offers a robust visual scripting environment. 3. **Unity** with visual scripting tools like Playmaker or Bolt, and **Godot**, which uses GDScript, similar to Python. 4. **Scratch**, although some felt it might be more suited for younger children. 5. **GameMaker**, which allows for both drag-and-drop and coding options, making it accessible for beginners. 6. **RPG Maker**, which is particularly good for creating turn-based games. 7. **Tabletop Simulator**, which allows for quick prototyping of board games and can help in understanding game mechanics without heavy coding. Several users emphasized the importance of focusing on game design rather than programming at this stage, suggesting that the child could start with tabletop games or simple prototyping before moving on to more complex coding environments. They also highlighted the value of exploring existing games with modding capabilities, as this can provide a hands-on introduction to game development. The conversation also touched on the potential pitfalls of platforms like Roblox, with some users warning about exploitative practices and the challenges of navigating online spaces. Others defended Roblox as a viable option for kids, citing its community and resources for learning. Overall, the discussion provided a wealth of resources and perspectives on how to nurture a child's interest in game development, balancing creativity with the technical skills needed to bring their ideas to life.